# 此文件应放至于目标服务器的/usr/bin目录下，并赋予其可执行的权限
# 参数是Jenkins根据Jenkinsfile执行流水线作业时，在“通过Publis Over SSH通知目标服务器”阶段执行当前脚本时传递过来的
harbor_address=$1
harbor_repo=$2
harbor_user=$3
harbor_pwd=$4
host_port=$5
container_port=$6
project=$7
version=$8

# 拼拉镜像名
imageName=$harbor_address/$harbor_repo/$project:$version

echo $imageName

# 获取当前项目运行中的容器ID
containerId=`docker ps -a | grep ${project} | awk '{print $1}'`

echo $containerId

# 判断如果有运行中的容器，则先停止容器，然后移除容器
if [ "$containerId" != "" ] ; then
  docker stop $containerId
  docker rm $containerId
fi

# 获取当前项目所有的镜像版本
tag=`docker images |grep ${project} | awk '{print $2}'`

echo $tag

# 如果有跟传递过来的版本号一致的镜像，则先移除此镜像
if [[ "$tag" =~ "$version" ]] ; then
  docker rmi $imageName
fi

# 登录到harbor
docker login -u $harbor_user -p $harbor_pwd $harbor_address

# 拉取镜像
docker pull $imageName
# 部署服务
docker run -d -p $host_port:$container_port --name $project $imageName

echo "SUCCESS"